package cn.hbads.version.annotation;

import cn.hbads.version.provider.DynNameProvider;
import cn.hbads.version.provider.MessageProvider;
import cn.hbads.version.provider.ValueTranslator;

import java.lang.annotation.*;

/**
 * <b>标注数据字段是版本控制业务字段</b>
 *
 * @author yvvb
 * @date 2025/5/5
 */
@Documented
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface FieldVersion {

    String name() default "";

    Class<? extends DynNameProvider> dynNameClass() default DynNameProvider.class;

    Class<? extends ValueTranslator> translatorClass() default ValueTranslator.class;

    Class<? extends MessageProvider> msgProviderClass() default MessageProvider.class;

    int showOrder() default Integer.MAX_VALUE;
}
